Disk input/output (IO) refers to the interactions of software applications with a hardware data storage device such as a hard drive. Disk IO enables software applications to store and retrieve data to and from the hardware data storage device. In a computing system, the hardware data storage device typically receives a plurality of disk IO requests from various software applications. Disk IO scheduling mechanisms are implemented so that the hardware data storage device may respond to each of the disk IO requests.
Current disk IO scheduling mechanisms are generally based on disk IO bandwidth reservation or priority queues. For example, disk IO requests may be queued by a disk IO manager of an operating system in the order that they are received, and then execute sequentially. In other examples, the disk IO manager may queue and execute each of the received disk IO requests according to priority.
These disk IO mechanisms may fall short of providing fair disk IO response to all users in a multi-user environment where a plurality of users are access data stored on the same hardware data storage device. For instance, a first user may use more software applications than a second user, resulting in more disk IO bandwidth being devoted to the first user than the second user. In scenarios where some users are using significantly more software applications than other users, such imbalance in disk IO bandwidth distribution may cause poor computing experience for those users that are receiving inadequate disk IO bandwidth.